package app.controlador;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Vector;

import com.thoughtworks.xstream.XStream;

import vo.PendienteVO;
import vo.TiendaVO;

import app.modelo.BusinessdelegateCD;
import framework.controlador.Controlador;
import framework.modelo.Businessdelegate;
import framework.vista.Vista;

public class ControladorEnvioATienda extends Controlador
{
	public ControladorEnvioATienda(Businessdelegate mod, Vista v)
	{
		super(mod, v);
	}

	// Obtiene a enviar y pendientes
	@SuppressWarnings("unchecked")
	public Vector obtenerAEnviarYPendientes()
	{
		return ((BusinessdelegateCD)(this.getModelo())).obtenerAEnviarYPendientes();
	}

	@SuppressWarnings("unchecked")
	public Vector obtenerPendientesConTienda(TiendaVO tienda)
	{
		return ((BusinessdelegateCD)(this.getModelo())).obtenerPendientesConTienda(tienda);
	}

	@SuppressWarnings("unchecked")
	public Vector obtenerTiendas()
	{
		return ((BusinessdelegateCD)(this.getModelo())).obtenerTiendas();
	}

	public void registrarEnvioATienda()
	{
		((BusinessdelegateCD)(this.getModelo())).registrarEnvioATienda();
	}
	
	@SuppressWarnings("unchecked")
	public void generarEnviosXML()
	{
		// Genera envios
		@SuppressWarnings("unused")
		Vector pendientes;
		@SuppressWarnings("unused")
		Vector tiendas;
		TiendaVO tienda;
		
		tiendas=this.obtenerTiendas();
		
		if(tiendas.size()!=0)
		{
			for(int i=0;i<tiendas.size();i++)
			{
				tienda=(TiendaVO)tiendas.get(i);
				pendientes=this.obtenerPendientesConTienda(tienda);

				String file="EnvT " + tienda.getCodigo() + ".xml";
				FileOutputStream out=null;
				
				try {
					out = new FileOutputStream(file);
				} catch (FileNotFoundException e1) {
					System.out.println("No se pudo generar el XML EnvT");
				}
				PrintStream printStream=new PrintStream(out);
				
				XStream xstream=new XStream();
				xstream.alias("Envio", PendienteVO.class);
				
				if(pendientes.size()!=0)
				{
					for(int j=0;j<pendientes.size();j++)
					{
						String envio=xstream.toXML(pendientes.get(j));
						printStream.println(envio);
					}
				}
				
				printStream.close();
			}
			
			this.registrarEnvioATienda();
		}
	}
}
